package redecolaborativa.client;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Button;

public class ItemEmprestado extends Composite {
	private FachadaAsync fachada;
	private AbsolutePanel absolutePanel;
	private String nomeItem, beneficiado, tempoPrevisto, dataInicial, idEmprestimo, idSessao;
	
	public ItemEmprestado(final FachadaAsync fachada, final String nomeItem, final String beneficiado, final String tempoPrevisto, final String dataInicial, final String idEmprestimo, final String idSessao) {
		this.nomeItem = nomeItem;
		this.beneficiado = beneficiado;
		this.tempoPrevisto =  tempoPrevisto;
		this.dataInicial = dataInicial;
		this.idEmprestimo = idEmprestimo;
		this.idSessao = idSessao;
		this.fachada = fachada;
		
		absolutePanel = new AbsolutePanel();
		initWidget(absolutePanel);
		absolutePanel.setSize("619px", "118px");
		
		iniciaLabels();
		requisitarDevolucao();
	}
	
	private void requisitarDevolucao() {
		Button btnRequisitarDevolucao = new Button("Requisitar devolucao");
		btnRequisitarDevolucao.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				try {
					fachada.requisitarDevolucao(idSessao, idEmprestimo, new AsyncCallback<Void>() {
						@Override
						public void onSuccess(Void result) {
							Window.alert("Devolucao de item requisitada com sucesso!");
						}
						@Override
						public void onFailure(Throwable caught) {
							Window.alert("Devolucao de item requisitada com sucesso!");
						}
					});
				} catch (Exception e) {
					Window.alert(e.getMessage());
				}
			}
		});
		absolutePanel.add(btnRequisitarDevolucao, 458, 39);
		btnRequisitarDevolucao.setSize("135px", "33px");
	}
	
	private void iniciaLabels() {
		Label lblItem = new Label("Item: ");
		lblItem.setStyleName("caption-panel");
		absolutePanel.add(lblItem, 10, 10);
		
		Label lblBeneficiado = new Label("Beneficiado: ");
		lblBeneficiado.setStyleName("caption-panel");
		absolutePanel.add(lblBeneficiado, 10, 35);
		
		Label lblTempoPrevisto = new Label("Tempo previsto:");
		lblTempoPrevisto.setStyleName("caption-panel");
		absolutePanel.add(lblTempoPrevisto, 10, 60);
		
		Label lblDataDeInicio = new Label("Data de inicio:");
		lblDataDeInicio.setStyleName("caption-panel");
		absolutePanel.add(lblDataDeInicio, 10, 85);
		
		Label lbNomeItem = new Label(nomeItem);
		absolutePanel.add(lbNomeItem, 50, 10);
		
		Label lbBeneficiado = new Label(beneficiado);
		absolutePanel.add(lbBeneficiado, 105, 35);
		
		Label lbTempoPrevisto = new Label(tempoPrevisto);
		absolutePanel.add(lbTempoPrevisto, 132, 60);
		
		Label lbDataInicial = new Label(dataInicial);
		absolutePanel.add(lbDataInicial, 116, 85);
	}
}
